package com.tlvip.arithmetic.ch02;

import java.io.*;

/**
 * <p>description：统计全国人，每个年龄对应的人员数量
 * 解法：定义一个长度200的数组，每个下标索引代表年龄，初始值0，
 * 当读到年龄数据时，将对应下标索引的值+1，得到年龄对应的数量</p>
 * <p>copyright： copyright(C)2016-2099</p>
 * <p>Life is short,we need passion</p>
 * <p>Summary： </p>
 * <p>instructions： </p>
 * Date 1/23/21</p>
 * Author mac
 *
 * @version 1.0
 */
public class AgeStas {
    public static void main(String[] args) {
        try {
            // 数据文件地址
            String fileName = "/Users/zhaobing/temp/ageFile.txt";
            // 存储年龄数量的数组
            int data[] = new int[200];
            // 文件中年龄数据的总行数
            int tot = 0;
            long start = System.currentTimeMillis();
            InputStreamReader isr = new InputStreamReader(new FileInputStream(fileName), "UTF-8");
            BufferedReader br = new BufferedReader(isr);
            // 时间复杂度 O(n)
            String str = "";
            while ((str = br.readLine()) != null) {
                int age = Integer.valueOf(str);
                // 年龄做为数组下标，将下标对应的数组值自增1
                data[age]++;
                // 总数量自增1
                tot++;
            }
            System.out.println("总共的人数：" + tot);
            for (int i = 0; i < 200; i++) {
                System.out.println(i + ":" + data[i]);
            }
            System.out.println("计算花费的时间为：" + (System.currentTimeMillis() - start) + "ms");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
